home *** CD-ROM | disk | FTP | other *** search
/ CyberMycha 2008 January / Cybermycha 1_2008.iso / Data.cab / _DFA5C05516F74845B807AE63A9EB479A < prev    next >
Encoding:
Text File  |  2004-07-22  |  2.4 KB  |  78 lines

  1.  
  2. regc( 0, "TFACTOR" )
  3. regc4f( 3, %dirtcolor_r, %dirtcolor_g, %dirtcolor_b, 0.0 )
  4. regc4f( 4, %dirtsnow, %dirtgravel, %dirtmud, 0.0 )
  5. regc4f( 5, %daycolor_r, %daycolor_g, %daycolor_b, %daycolor_a )
  6. regc4f( 7, %ambient_r, %ambient_g, %ambient_b, %ambient_a )
  7.  
  8. hlsl("
  9.  
  10. #include <../common_hlsl.h>
  11. #include <cardef.h>
  12.  
  13. sampler2D    sColor: register(s0);     
  14. sampler2D    sDirt: register(s1);    
  15. sampler2D    sClouds: register(s2);
  16. sampler2D    sLightmap: register(s3);
  17. samplerCUBE    sCubemap: register(s4);
  18. //sampler2D    sDirtNormalmap: register(s5);
  19.  
  20. const HALF4 DirtLevel : register(c0); // DirtLevel.a 
  21. const HALF4 DirtColor : register(c3);
  22. const HALF3 DirtType : register(c4);
  23. const HALF3 DayColor : register(c5);
  24. const HALF4 Ambient : register(c7);
  25.  
  26. struct PS_INPUT
  27. {
  28.     HALF4        SpotDiffuse_and_Diffuse: COLOR0;
  29.     HALF4        Specular_and_Fresnel: COLOR1;
  30.     HALF2       uvColor : TEXCOORD0;    
  31.     HALF        DamageLevel: TEXCOORD1;
  32.     HALF2       uvClouds: TEXCOORD2;  
  33.     HALF2       uvLightmap: TEXCOORD3;
  34.     HALF3       uvwCubemap: TEXCOORD4;             
  35. };    
  36.     
  37. HALF4 main( PS_INPUT i ): COLOR {
  38.  
  39.     HALF     Fresnel = i.Specular_and_Fresnel.a;
  40.     HALF     DamageLevel = i.DamageLevel;
  41.     HALF4     DirtScratch = tex2D( sDirt, i.uvColor );
  42.     HALF     Scratch = DirtScratch.a*DamageLevel;
  43.  
  44.     HALF     DirtMask = saturate(dot(DirtScratch.rgb, DirtType)*DirtLevel.a - Scratch);
  45.     HALF     Diffuse = i.SpotDiffuse_and_Diffuse.a;
  46.     HALF     Specular = i.Specular_and_Fresnel.b;
  47.     HALF3     Cubemap    = texCUBE( sCubemap, i.uvwCubemap);
  48.     
  49.     HALF     Clouds = 1-(tex2D(sClouds, i.uvClouds)).a;
  50.     HALF     Lightmap = saturate((tex2D(sLightmap, i.uvLightmap)).a);
  51.     HALF     Shadows = saturate(Clouds*Lightmap*SHADOWSMUL+SOFTSHADOWS);
  52.     HALF4     Color = tex2D( sColor, i.uvColor );
  53.     HALF     CubemapMask = saturate(Color.a*2-1);
  54.     HALF     SpecularMask = saturate(Color.a*2);
  55.  
  56.     Diffuse = saturate(Ambient.r*Shadows*Diffuse + Ambient.a);
  57.     CubemapMask = saturate(CubemapMask+Fresnel*CubemapMask*16-Scratch);    
  58.     CubemapMask *= 1-DirtMask;
  59.     SpecularMask *=(1-DirtMask)*Shadows;
  60.     
  61.     Color.rgb = lerp( Color, DirtColor, DirtMask);
  62.     Color.rgb = lerp( Color, SCRATCHCOLOR, Scratch);
  63.     Color.a = 0.4;  // water
  64.  
  65. #if VS_SPOTLIGHTS
  66.     HALF3 Spot = Color.rgb*i.SpotDiffuse_and_Diffuse.rgb;
  67. #endif    
  68.     Color.rgb = saturate(Color*Diffuse+Specular*SpecularMask+Cubemap*CubemapMask)*DayColor;
  69. #if VS_SPOTLIGHTS
  70.     Color.rgb = saturate(Color+Spot);
  71. #endif
  72.     Color.a = WATERDEEP;  // water
  73.     
  74.     return Color;
  75. }
  76. ")
  77.  
  78.